// src/mock/index.js

// 1. 引入 Mock
import Mock from 'mockjs';

// 2. 设置拦截ajax请求的响应时间
Mock.setup({
    timeout: '200-600'
});

// 3. 使用 Vite 的 Glob 导入功能来遍历所有 mock 文件
//    `import.meta.glob` 是 Vite 提供的特殊函数
//    它会返回一个对象，键是匹配到的文件路径，值是一个动态导入函数
const mockModules = import.meta.glob('./*.js'); // 匹配当前目录下所有 .js 文件

// 4. 定义一个数组来收集所有的 mock 配置
let configArray = [];

// 5. 遍历并加载所有匹配到的模块
//    我们使用 for...of...await 循环来处理异步的动态导入
const loadMockModules = async () => {
    for (const path in mockModules) {
        // 排除 index.js 文件本身
        if (path.endsWith('/index.js')) {
            continue;
        }

        // 执行动态导入函数，获取模块内容
        const module = await mockModules[path]();

        // 假设你的其他 mock 文件（如 user.js）是默认导出一个配置对象
        // 例如: export default { 'get|/api/user': { ... } }
        // 那么模块内容就在 module.default
        if (module.default) {
            configArray.push(module.default);
        }
    }

    // 6. 所有模块加载完毕后，注册所有的 mock 服务
    registerMocks(configArray);
};

// 7. 注册 mock 服务的函数
const registerMocks = (configs) => {
    configs.forEach((item) => {
        for (let [path, target] of Object.entries(item)) {
            let protocol = path.split('|');
            Mock.mock(new RegExp('^' + protocol[1]), protocol[0], target);
        }
    });
    console.log('Mock services have been registered successfully!');
};

// 8. 执行加载函数
loadMockModules();
